package uk.ac.standrews.cs.cs2001.practical02.interfaces;

import java.util.Date;

/**
 * Interface for a factory allowing the other interfaces to be instantiated without knowing the implementation classes.
 * 
 * @author eb
 */
public interface IFactory {

	/**
	 * Creates an instance of {@link IBook}.
	 * 
	 * @param title the title of the book
	 * @param author the author of the book
	 * @param isbn the isbn of the book
	 * @param year the year of the book
	 * @return the book
	 */
	IBook makeBook(String title, String author, String isbn, Date year);

	/**
	 * Creates an instance of {@link ILibrary}.
	 * 
	 * @return the library
	 */
	ILibrary makeLibrary();
}
